package com.kgc.pageItem.listener;

import com.kgc.entity.TbItem;
import com.kgc.entity.TbItemDesc;
import com.kgc.pageItem.entity.Item;
import com.kgc.service.ItemDescService;
import com.kgc.service.ItemService;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.beans.factory.annotation.Autowired;

import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

public class FreemarkerListener implements MessageListener {
    @Autowired
    private ItemService itemService;

    @Autowired
    private ItemDescService itemDescService;
    @Override
    public void onMessage(Message message) {
        //1.得到商品编号
        Long itemId=null;
        TextMessage textMessage=(TextMessage)message;
        TbItem tbItem=null;
        TbItemDesc tbItemDesc=null;
        Item item=null;
        try {
            itemId=Long.parseLong(textMessage.getText());
            tbItem=itemService.findById(itemId);
            item=new Item(tbItem);
            tbItemDesc=itemDescService.findById(itemId);
            System.out.println(item);
            Configuration configuration=new Configuration(Configuration.getVersion());
            //设置freemarker所有模板存放的目录
            configuration.setDirectoryForTemplateLoading(new File("E:\\itripparent\\itrip-pageItem-web\\src\\main\\webapp\\WEB-INF\\ftl"));
                // 第三步：设置模板文件使用的字符集。一般就是 utf-8.
            configuration.setDefaultEncoding("utf-8");
                // 第四步：加载一个模板，创建一个模板对象。
            Template template = configuration.getTemplate("item.ftl");
            // 第五步：创建一个模板使用的数据集，可以是 pojo 也可以是 map。一般是 Map。
            Map dataModel = new HashMap();//向hello.ftl传数据
                //向数据集中添加数据
            dataModel.put("item",item);
            dataModel.put("itemDesc",tbItemDesc);
            // 第六步：创建一个 Writer 对象，一般创建一 FileWriter 对象， 指定生成的文件名。
            Writer out = new FileWriter(new File("E:\\output\\"+itemId+".html"));
            // 第七步：调用模板对象的 process 方法输出文件。
            template.process(dataModel, out);
            // 第八步：关闭流。
            out.close();


        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
